package com.chenyue.cm.match.service;

import com.chenyue.cm.base.service.BaseServiceIface;
import com.chenyue.cm.live.vo.LiveUserMatchHistory;
import com.chenyue.cm.match.domain.JdMatchFormat;
import com.chenyue.cm.match.domain.JdMatchFormatMember;
import com.chenyue.cm.match.domain.JdMatchLiveUser;
import com.chenyue.cm.match.vo.MatchScore;
import com.chenyue.cm.match.vo.MatchScoreList;

import java.util.List;

/**
 * @author chenyue-cm
 */
public interface JdMatchLiveUserService extends BaseServiceIface<JdMatchLiveUser> {

    /**
     * 查询参赛历史 总数
     *
     * @param userId 用户id
     * @return int
     */
    Integer liveUserMatchHistoryCount(Integer userId);

    /**
     * 查询参赛历史
     *
     * @param userId      用户id
     * @param convertPage 分页内容
     * @return list
     */
    List<LiveUserMatchHistory> liveUserMatchHistoryList(Integer userId, String convertPage);

    /**
     * 获取参赛员历史总分
     *
     * @param id 参赛员userId
     * @return 最高总分
     */
    Integer historyRecord(Integer id);

    /**
     * 获取参赛员历史排名
     *
     * @param id 参赛员userId
     * @return 最高排名
     */
    Integer historyRank(Integer id);

    /**
     * 查询直播间参赛员
     *
     * @param recordId 直播id
     * @param itemId   项目id
     * @param groupId  分组id
     * @param page     分页参数
     * @return MatchMemberList
     */
    List<MatchScoreList.MatchMemberList> matchMemberScoreList(Integer recordId, Integer itemId, Integer groupId, String page);

    /**
     * 查询直播间参赛员
     *
     * @param recordId 直播id
     * @param itemId   项目id
     * @param groupId  分组id
     * @return count
     */
    int matchMemberScoreListCount(Integer recordId, Integer itemId, int groupId);

    /**
     * 查询直播间分配的团队
     *
     * @param recordId 直播id
     * @param itemId   项目id
     * @param page     分页参数
     * @return MatchMemberList
     */
    List<MatchScoreList.MatchGroupList> matchGroupScoreList(Integer recordId, Integer itemId, String page);

    /**
     * 查询直播间分配的团队
     *
     * @param recordId 直播id
     * @param itemId   项目id
     * @return MatchMemberList
     */
    int matchGroupScoreListCount(Integer recordId, Integer itemId);

    /**
     * 赛程下参赛员
     *
     * @param formatId 赛程id
     * @param itemId   项目id
     * @param groupId  分组id
     * @return MatchMemberList
     */
    List<MatchScoreList.MatchMemberList> matchMemberScoreList(String formatId, Integer itemId, Integer groupId);

    /**
     * 查询直播间分配的团队
     *
     * @param formatId 直播id
     * @param itemId   项目id
     * @return MatchMemberList
     */
    List<MatchScoreList.MatchGroupList> matchGroupScoreList(String formatId, Integer itemId);

    /**
     * 核算成绩 计算排名
     *
     * @param format 赛程信息
     * @return 晋级人员
     */
    List<JdMatchFormatMember> calculateAndRank(JdMatchFormat format);

    /**
     * 查询后台赛程成绩列表
     *
     * @param formatId 赛程id
     */
    List<MatchScore> getMatchScoreList(Integer formatId, Integer page, Integer rows);

    /**
     * 查询后台赛程成绩列表
     *
     * @param formatId 赛程id
     */
    long getMatchScoreListCount(Integer formatId);
}